Necesito almacenar datos de manera eficiente en algo que se parezca a un "diccionario de conjuntos", por ejemplo, tener un diccionario con múltiples valores (únicos) que coincidan con cada clave única. La fuente de mis datos sería un XML estructurado (no muy bien).
Mi idea es: voy a mirar a través de una serie de elementos y encontrar claves. Si la clave no existe, agréguela al diccionario, si ya existe, simplemente agregue un nuevo valor en la clave correspondiente.
Y el resultado sería algo como:
{ 'key1': {'1484', '1487', 1488', ...} 'key2': {'1485', '1486', '1489', ...} 'key3': {'1490', '1491', '1492', ...} ... }Necesito agregar nuevas claves sobre la marcha. Necesito empujar valores únicos en cada conjunto. Necesito poder iterar a través de todo el diccionario.
No estoy seguro de si esto es factible, pero si alguien pudiera empujarme en la dirección correcta, estaría más que agradecido.
No voy a comparar esto, pero en mi experiencia, los dictados nativos son más rápidos.
store = {} for key, value in yoursource: try: store[key].add(value) except KeyError: store[key] = {value}from collections import defaultdict mydict = defaultdict(set) mydict["key1"] |= {'1484', '1487', '1488'}La iteración es como el dict normal.
Usandodict.setdefault() para crear la clave si no existe, e inicializándola con un conjunto vacío:
store = {} for key, value in yoursource: store.setdefault(key, set()).add(value)